#include <iostream>
#include <queue>
#include <map>
#include <unordered_map>
#include <vector>
#include <algorithm>
#include <cmath>
#include <string>
#include <cstring>
#include <set>
#include <unordered_set>
using namespace std;
typedef long long ll;
typedef unsigned long long ull;
typedef pair<int,int> pii;
const int N=1e5+10;
int a[N];

void solve()
{
	int b[N]={0};
	int st[N]={0};
	int n,m;
	cin>>n>>m;
	int l=0,r=0;
	int idx=0;
	for(int i=0;i<n;i++)
	{
		cin>>a[i];
	}
	for(int i=0;i<n;i++)
	{
		if(a[i]==-1) l++;
		else if(a[i]==-2) r++;
		else if(!st[a[i]])
		{
			st[a[i]]=1;
			b[idx]=a[i];
			idx++;
		}
	}
	sort(b,b+idx);
	int ans=0;
	for(int i=0;i<idx;i++)
	{
		int cnt=0;
		cnt=1+min(b[i]-1,l+i)+min(m-b[i],r+idx-1-i);
		ans=max(ans,cnt);
	}
	int cnt=0;
	for(int i=1;i<=m;i++)
	{
		
		if(r && !st[i])
		{
			r--;
			cnt++;
		}
		else if(st[i])
		{
			cnt++;
		}
		
	}
	ans=max(ans,cnt); 
	cnt=0;
	for(int i=m;i>=1;i--)
	{
		if(l && !st[i])
		{
			cnt++;
			l--;
		}
		else if(st[i])
		{
			cnt++;
		 } 
	}
	ans=max(ans,cnt); 
	cout<<ans<<endl;
	
}
int main()
{
	int t;
	cin>>t;
	while(t--)
	{
		solve();
	}

	return 0;
}

